Non-Invasive Collection of Data

ABSTRACT

Non-invasive collection of data is presented. A server segments a web page into regions and sends the segmented web page along with a data collector program to a client in response to receiving a client request. The client displays the web page and loads the data collector program which initiates particular event handlers to monitor user event activity corresponding to the displayed web page. When the user performs a user event, such as moving his mouse into a particular web page region, the data collector program collects user event data and associates the user event data with the particular web page region. When the user event is complete, the data collector program sends the collected user event data to the server.

RELATED APPLICATIONS

This application is a continuation application of co-pending U.S.Non-Provisional patent application Ser. No. 10/425,539, entitled“Non-Invasive Collection of Data,” filed on Apr. 28, 2003.

BACKGROUND OF THE INVENTION

1. Technical Field

The present invention relates in general to a system and method fornon-invasive collection of data corresponding to a user event. Moreparticularly, the present invention relates to a system and method forcollecting user event data and associating the user event data with aweb page region.

2. Description of the Related Art

The Internet has changed the way that a business presents itself inorder to attract and maintain customers. In many cases, a customer maycome in contact with a particular business solely through the business'website. In these situations, the website is the business' mostimportant asset in influencing a customer to place an order. Forexample, a customer may not know of a particular business because thebusiness does not have retail stores near the customer's location. Inthis example, a customer determines whether to place an order with thebusiness based upon the customer's website experience. In other words, abusiness' home page and the organization of a business' website maydetermine whether a customer places an order.

A business attempts to organize its website whereby items of mostcustomer interest are positioned such that a user is not required toclick down multiple layers in order to view the item. For example, acustomer may be interested in a popular children's toy and if thecustomer does not see the toy, or a link to the toy, on the business'home page, the customer may not wish to “click” through the business'website in order to find the toy, but rather access another business'homepage that displays the toy.

A challenge found in identifying how users view a business' website,however, is that a business is not able to collect data that identifieswhich portions (i.e. regions) of a particular web page that a userviews. For example, a website may include a Java applet that is loadedto perform a particular function, such as a mortgage calculator, and auser selects a command button in order to access the mortgagecalculator. In this example, since the mortgage calculator is a Javaapplet, the business is not notified when a user selects the mortgagecalculator and thus, the business does not know how many users accessthe mortgage calculator. Therefore, the business does not know theimportance of the mortgage calculator to its customers.

In another example, a business may have a large home page that requiresa user to scroll down the page in order to view items at the bottom ofthe home page. In this example, the business identifies that items atthe bottom of the home page do not sell as well as items at the top ofthe home page. The business, however, is not able to determine whetherthe lesser selling items are being viewed as frequently as the items atthe top of the page or whether the lesser selling items are just not aspopular as the items at the top of the page.

What is needed, therefore, is a way to non-invasively collect user eventdata that collects user event data corresponding to the location of auser event within a particular web page and sends the user event data toa server to process.

SUMMARY

It has been discovered that the aforementioned challenges are resolvedby dividing a web page into regions and collecting user event datacorresponding to each region. A client receives a web page from a serverwhereby the server divided the web page into regions. When a userperforms a user event within a particular web page region, such asmoving his mouse, a collector program collects user event datacorresponding to the user event and sends the user event data to theserver to process.

A server segments a web page by dividing the web page into regions. Forexample, the server may divide the web page into four equal regions thatare an upper left region, an upper right region, a lower left region,and a lower right region. When the server receives a client request, theserver sends the segmented web page along with a data collector programthat is designed to monitor user event activity for each web pageregion.

The client receives the web page and the data collector program, anddisplays the web page on the client's display for the user to view. Theclient also loads the data collector program which initiates particularevent handlers. The event handlers monitor and track user events at theclient based upon criteria that is included in the data collectorprogram. When the user performs a user event, such as moving hispointing device into a web page region, the data collector programidentifies the user event and proceeds through a series of steps todetermine whether to send corresponding user event data to the server.

When the data collector program identifies a suitable user event, thedata collector program collects data and associates the data with acorresponding web page region until the user event is complete. Usingthe example described above, the user may have moved his pointing deviceinto the upper left region for thirty seconds. The data collectorprogram formats the user event data, and sends the user event data tothe server. The data collector program continues to monitor user eventscorresponding to the web page until the client requests a subsequent webpage, at which point the client sends a web page request to a suitableserver to process.

The foregoing is a summary and thus contains, by necessity,simplifications, generalizations, and omissions of detail; consequently,those skilled in the art will appreciate that the summary isillustrative only and is not intended to be in any way limiting. Otheraspects, inventive features, and advantages of the present invention, asdefined solely by the claims, will become apparent in the non-limitingdetailed description set forth below.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention may be better understood, and its numerousobjects, features, and advantages made apparent to those skilled in theart by referencing the accompanying drawings. The use of the samereference symbols in different drawings indicates similar or identicalitems.

FIG. 1 is a diagram showing a client sending user event data to a serverthat corresponds to a page of data;

FIG. 2 is a user interface window showing regions that include varioususer functions;

FIG. 3 is a flowchart showing steps taken in a developer dividing a webpage into regions;

FIG. 4 is a display showing lines of code that identify particularregions within a web page;

FIG. 5 is a display showing lines of code for a collector program thattracks an amount of time that a pointing device is within a particularregion;

FIG. 6 is a flowchart showing steps taken in a server sending a web pageto a client, the client collecting data corresponding to a user event,and the client sending the user event data to the server;

FIG. 7 is a flowchart showing steps taken in a client non-invasivelycollecting user event data;

FIG. 8 is a flowchart showing steps taken in a client filtering userevent data;

FIG. 9 is a flowchart showing steps taken in processing user event dataat a server location;

FIG. 10 is a flowchart showing steps taken in a server configuringcollection threshold settings; and

FIG. 11 is a block diagram of an information handling system capable ofimplementing the present invention.

DETAILED DESCRIPTION

The following is intended to provide a detailed description of anexample of the invention and should not be taken to be limiting of theinvention itself. Rather, any number of variations may fall within thescope of the invention which is defined in the claims following thedescription.

FIG. 1 is a diagram showing a client sending user event data to a serverthat corresponds to a page of data. User 110 uses client 100 to requesta page of data from server 130, such as a web page. Client 100 includesdisplay 115 which displays the particular web page. When user 110 wishesto view a web page, client 100 sends request 125 to server 130 throughcomputer network 160, such as the Internet. For example, user 110 maywish to view his Yahoo home page.

Server 130 receives request 125 and retrieves the requested web pagewhich is divided into regions from page store 135 (see FIGS. 2, 3 andcorresponding text for further details regarding regional divisions).Page store 135 may be stored on a non-volatile storage area, such as acomputer hard drive. Server 130 also retrieves a data collector programfrom collector program store 140 which collects user event data at aclient corresponding to the requested web page. In one embodiment, thecollector program is included in the requested web page. Server 130sends page 145 and program 150 to client 100 through computer network160. Client 100 receives page 145 and program 150, and displays page 145on display 115 for user 110 to view. Client 100 also loads program 150which initiates particular event handlers. The event handlers monitorand track user events at client 100 based upon criteria that is includedin program 150.

When user 110 uses his pointing device to move around the web page, orhis keyboard to enter or select information on the web page, collectionprogram 150 identifies the user event and proceeds through a series ofsteps to determine whether to send corresponding user event data toserver 130. Collection program 150 is interested in user events thatoccur within the web page, such as mouse movements within regions (seeFIGS. 6, 7, 8, and corresponding text for further details regarding datacollection).

When collection program 150 identifies a valid user event, collectionprogram 150 collects data until the user event is complete. For example,user 110 may have moved his pointing device over a particular region andleft his pointing device in the region for thirty seconds. Collectionprogram 150 formats the user event data, and sends user event data 170to server 130 through computer network 160. Server 130 receives userevent data 170 and stores it in data store 180. Data store 180 may bestored on a non-volatile storage area, such as a computer hard drive.

As one skilled in the art can appreciate, user event data maynon-invasively sent to a server using a technique such as creating animage object and composing a URL which is set as the source attribute ofthe image object. Using this technique, user event data is included inthe URL's query string which is sent to a server when the clientsilently requests the URL. The server returns an image which may be ofvarying size as determined by the server. The size of the image may beused to indicate a response message (i.e. returning a 1 pixel x 1 pixelimage indicates successful transmission, 2 px×2 px image indicatesserver overflow, etc.).

Server 130 determines whether it received user event data 170 intact(i.e. error free) . If server 130 receives user event data 170 intact,server 130 sends acknowledgement 190 to client 100 which indicates toclient 100 that server 130 received user event data 170. In oneembodiment, client 100 re-sends user event data 170 to server 130 ifclient 100 does not receive an acknowledgement message within aparticular time period.

In another embodiment, server 130 compares user event data history anddetermines whether to adjust collection threshold settings for userevent data collection. For example, server 130 may be receiving anumerous amount of user event data corresponding to user 110 entering aparticular region. In this example, server 130 may adjust collectionthreshold settings in order to decrease the amount of user event datathat client 100 sends corresponding to the particular region (see FIGS.8, 10, and corresponding text for further details regarding collectionthreshold settings).

FIG. 2 is a user interface window showing regions that include varioususer functions. Window 200 displays a web page that is divided up intofour regions. The four regions are region A 210, region B 220, region C230, and region D 240. Window 200 includes text box 280 whichcorresponds to location of the displayed web page. Window 200 alsoincludes scroll bar 285 in which a user selects in order to view variousplaces of the displayed web page. A user may select command buttons 250,255, 260, 265, 270, and 275 in order to provide browser instructions toa client, such as displaying a previously displayed web page ordisplaying the user's home page.

The displayed web page and a corresponding collection program areconfigured such that the collection program tracks user events betweenthe four regions, such as pointing device (i.e. mouse) movements. RegionA 210 includes links 212, 214, and 216 in which a user selects to viewcorresponding web pages. When a user moves his pointing device intoregion A 210, the collector program tracks how long the pointing deviceis within region A 210. If the user selects link 212, 214, or 216, andthe selection instructs the client to request a new web page, thecollector program stops collecting user event data and sends the amountof time the user's pointing device remained in region A 210 prior to thenew page request.

Region B 220 includes command button 225 in which a user selects toinitiate an applet and display a mortgage calculator. Selecting commandbutton 225 does not instruct the client to request information from theserver since the applet is loaded on the client at the time the web pagewas loaded. When the user moves his pointing device into region B 220,the collector program tracks the user event until the user's pointingdevice leaves region B 220, at which point the collector program sendsuser event data to the server. In one embodiment, region B 220 may besub-divided such that command button 225 is considered its own region,such as region D1.

Region C 230 includes list 232 which includes command buttons for a userto select. When the use positions his mouse over one of the commandbuttons, the client displays a sub-list, such as sub-list 236. Theexample in FIG. 2 shows that the user positioned pointing device 232over command button 234 which instructs processing to display sub-list236. In one embodiment, region C 230 may be sub-divided into smallerregions such that each command button is considered a separate region,such as region C1, region C2, region C3, and region C4. In thisembodiment, the collection program tracks which command button a user ismost interested.

Region D 240 includes tabs 242, 244, and 246 which correspond toparticular financial news. Information corresponding to each tab isloaded when the web page is displayed. When a user selects one of thetabs, the client brings corresponding data to the forefront for the userto view. When a user moves his pointing device into region D 240, thedata collector program tracks the length of time that the pointingdevice resides in region D 240. In one embodiment, region D 240 may besub-divided into smaller regions such that tabs 242, 244, and 246 areconsidered separate regions, such as region D1, region D2, and regionD3. In this embodiment, the collection program tracks which tab a useris most interested.

FIG. 3 is a flowchart showing steps taken in a developer dividing a webpage into regions. Processing commences at 300, whereupon processingretrieves a page of data from page store 315 (step 310). For example,the page of data may be HTML code corresponding to a web page. Pagestore 315 may be stored on a non-volatile storage area, such as acomputer hard drive. Developer 325 identifies a first region of the pageof data at step 320. For example, developer 325 may wish to divide thepage of data into four equal segments whereby the first region is theupper left corner of the web page.

Developer 325 selects a starting location of the identified region atstep 330, and processing inserts a region identifier, such as a starttag, at the selected starting location (step 340). Developer 325identifies an ending location of the identified region at step 350, andprocessing inserts a region identifier, such as an end tag, at theselected ending location (step 360).

A determination is made as to whether there are more regions to process(decision 370). Using the example described above, three other regionsrequire processing.

If there are more regions to process, decision 370 branches to “Yes”branch 372 which loops back to identify (step 380) and process the nextregion. This looping continues until there are no more regions toprocess, at which point decision 370 branches to “No” branch 378whereupon processing ends at 390. The page of data is now divided intoregions and is ready to send to a client computer.

FIG. 4 is a display showing lines of code that identify particularregions within a web page. Display 400 includes HTML code that divides aweb page into four physical regions by defining a table and includingfour cells in the table. As one skilled in the art can appreciate, othermethods of regionalizing a web page may be used, such as logicalgroupings whereby each web page link on a particular web page is groupedinto one region.

Line 410 includes a tag “<TR>” that defines the beginning of a first rowof the table. Line 420 includes code for the first cell of the first rowwhich includes an “onmouseover” event handler. When a user's mouse ispositioned over the first cell in the first row (e.g. region 1),onmouseover calls “handleEnterRegion” that is located in a collectorprogram which timestamps when the mouse entered the region. Line 430includes code which includes an “onmouseout” event handler. When auser's mouse exits region 1, onmouseout calls “handleExitRegion” that isincluded in the collector program which timestamps when the mouse exitsregion 1. The collector program may also perform functions, such asidentifying an amount of time that the user's mouse was in region 1 (seeFIG. 5 and corresponding text for further details regarding collectorprogram properties).

Line 440 includes code for the second cell of the first row whichincludes an “onmouseover” event handler. When a user's mouse ispositioned over the second cell in the first row (e.g. region 2),onmouseover calls “handleEnterRegion” that is included in the collectorprogram which timestamps when the mouse entered region 2. Line 450includes code which includes an “onmouseout” event handler. When auser's mouse exits region 2, onmouseout calls “handleExitRegion” that isincluded in the collector program which timestamps when the mouse exitsregion 2.

Line 455 includes a tag “<TR>” that defines the beginning of a secondrow of the table. Line 460 includes code for the first cell of thesecond row which includes an “onmouseover” event handler. When a user'smouse is positioned over the first cell in the second row (e.g. region3), onmouseover calls “handleEnterRegion” that is included in thecollector program which timestamps when the mouse entered region 3. Line470 includes code which includes an “onmouseout” event handler. When auser's mouse exits region 3, onmouseout calls “handleExitRegion” that isincluded in the collector program which timestamps when the mouse exitsregion 3.

Line 480 includes code for the second cell of the second row whichincludes an “onmouseover” event handler. When a user's mouse ispositioned over the second cell in the second row (e.g. region 4),onmouseover calls “handleEnterRegion” that is included in the collectorprogram which timestamps when the mouse entered region 4. Line 490includes code which includes an “onmouseout” event handler. When auser's mouse exits region 4, onmouseout calls “handleExitRegion” thatincluded in the collector program which timestamps when the mouse exitsregion 4.

FIG. 5 is a display showing lines of code for a collector program thattracks an amount of time that a pointing device is within a particularregion. Display 500 includes functions that create event objects whichtimestamp when a mouse enters a particular region (e.g.handleEnterRegion) and when a mouse exits the particular region (e.g.handleExitRegion).

Line 510 includes code that creates an event object “handleEnterRegion”which includes lines 515 through 530.

When a mouse enters a particular region, an onmouseover event callshandleEnterRegion to timestamp when the mouse entered the region (seeFIG. 4 and corresponding text for further details regarding onmouseoverevents). Line 515 includes code that determines whether user event datahas been collected for the particular region that is callinghandleEnterRegion. For example, a user may have positioned his mouse in“region 1” whereby the collector program marked the region (see line 580description below). In this example, the collector program does notacquire user event data for region 1 since data has been previouslyacquired.

Lines 520 and 521 include code that mark X and Y coordinates as to thelocation of a user's pointing device. The coordinate information is notused in the example shown in FIG. 5, but may be used in anotherembodiment whereby a developer wishes to know the location of the mousepointer in greater detail than just the region that the pointer entered.Line 530 includes code that marks the time of entry that the user'spointing device entered the particular region.

Line 540 includes code that creates an event object “handleExitRegion”which includes lines 550 through 580. When a mouse exits a particularregion, an onmouseout event calls handleExitRegion to timestamp when themouse exits the region (see FIG. 4 and corresponding text for furtherdetails regarding onmouseout events). Lines 550 and 551 include codethat mark X and Y coordinates as to the location of a user's pointingdevice. The coordinate information is not used in the example shown inFIG. 5, but may be used in another embodiment whereby a developer wishesto know the location of the mouse pointer in greater detail than justthe region that the mouse pointer is located. Line 555 includes codethat marks the time of exit that the user's mouse exits the particularregion.

Line 560 includes code that calculates the time that a user's pointingdevice was in a region by subtracting the time of entry from the time ofexit. Line 570 includes code that displays a message on a status barthat includes the region that the user's mouse exited and the time thatthe mouse was in the region. Line 580 includes code that marks alocation collection flag “true”. The location collection flag is used toidentify that data has been collected for the particular region. Theexample in FIG. 5 shows that when a user re-enters a region and theregion's location collection flag is “true”, line 515 jumps to line 590which displays a message on the status bar “Non-invasive data collectioncomplete”.

FIG. 6 is a flowchart showing steps taken in a server sending a web pageto a client, the client collecting data corresponding to a user event,and the client sending the user event data to the server. Clientprocessing commences at 600, whereupon the client waits for a pagerequest from user 602 (step 605). For example, user 602 may enter a URLlocation to view a particular web page. When the client receives thepage request from user 602, the client sends page request 615 to aserver at step 610.

Server processing commences at 620, whereupon the server receives pagerequest 615 at step 625. The server retrieves the requested page and acorresponding data collector program from page and program store 632 atstep 630. In one embodiment, the page and program are included in onefile. Page and program store 632 may be stored on a non-volatile storagearea, such as a computer hard drive. The server sends page/program 640to the client at step 635.

The client receives page/program 640 at step 645. The client displaysthe request page on the client's display and loads the collector program(step 650). The client waits for a user event at step 655, such as user602 moving his pointing device. When the client detects a user event, adetermination is made as to whether the user event is requesting a newweb page. For example, the user may select a hyperlink on the displayedweb page that points to a second web page. If the user event is a newpage request, decision 660 branches to “Yes” branch 662 which loops backto send and process a new page request. This looping continues until theclient detects a user event that is not a new page request, at whichpoint decision 660 branches to “No” branch 664 whereupon the clientcollects user event data corresponding to the user event, and sends theuser event data (e.g. data 668) to the server (pre-defined process block665 see FIG. 7 and corresponding text for further details regarding datacollection).

The server receives data 668, stores the data in data store 671, andsends an acknowledgement message (e.g. acknowledgement 672) to theclient indicating that the server received data 668. Data store 671 maybe stored on a non-volatile storage area, such as a computer hard drive.A determination is made as to whether the server should continueprocessing (decision 675). If the server should continue processing,decision 675 branches to “Yes” branch 677 which loops back to receivemore page requests. This looping continues until the server stopsprocessing, at which point decision 675 branches to “No” branch 679whereupon server processing ends at 680.

The client receives acknowledgement 672 which informs the client thatthe server received the user event data. If the client did not receiveacknowledgement 672 within a particular timeframe, the client mayre-send data 668 to the server until the client receives anacknowledgement message from the server. A determination is made as towhether the client should continue processing (decision 685). If theclient should continue processing, decision 685 branches to “Yes” branch687 which loops back to process more user requests. This loopingcontinues until client processing should stop, at which point decision685 branches to “No” branch 689 whereupon client processing ends at 690.

FIG. 7 is a flowchart showing steps taken in a client non-invasivelycollecting user event data. Processing commences at 700, whereupon theclient identifies an event type corresponding to a newly detected event(step 710). For example, a user may have moved his mouse into a region,such as “Region 1”, whereby processing identifies the event type as“Region 1 mouseover”.

A determination is made as to whether processing should filter the userevent data (decision 720). Using the example described above, processingmay be configured such that the client should send region 1 user eventdata to the server once per session. In this example, processing sendsregion 1 user event data the first time a user's pointing device entersregion 1, and then filters out (i.e. doesn't send) subsequent region 1user event data.

If processing should filter the user event data, decision 720 branchesto “Yes” branch 722 whereupon the user event data is filtered usingcollection threshold settings that are retrieved from event store 740(pre-defined process block 730, see FIG. 8 and corresponding text forfurther details). Event store 740 may be stored on a non-volatilestorage area, such as a computer hard drive.

On the other hand, if processing should not filter the user event dataand should send data to the server corresponding to each user event,processing branches to “No” branch 728 whereupon processing tracks theuser event until completion (step 750). For example, processing maytrack the amount of time that a user places his mouse in a particularregion. Once the user event is completed (i.e. the mouse is moved out ofa region), processing sends the user event data to server 770 (step760). If server 770 receives the data intact, server 770 sendsacknowledgement 775 to the client. On the other hand, if server 770 didnot receive the data intact, server 770 may not send a response, orserver 770 may send an error message to the client that indicates thatthe user event data included errors.

A determination is made as to whether the client received anacknowledgment message from server 770 (decision 780). If the client didnot receive an acknowledgement message, decision 780 branches to “No”branch 782 which loops back to re-send the user event data. This loopingcontinues until the client receives an acknowledgement message, at whichpoint decision 780 branches to “Yes” branch 788 whereupon processingreturns. In one embodiment, processing may be configured to limit thenumber of attempts to send the user event data to the server, such asfive attempts. In this embodiment, the client sends the user event datato the server a maximum of five times.

FIG. 8 is a flowchart showing steps taken in a client filtering userevent data. For example, processing may be configured such that theclient should capture user event data corresponding to a particularevent one time per session and then filter out (i.e. do not capture)subsequent user event data for the particular event during the remainingsession.

Processing commences at 800, whereupon processing retrieves collectionthreshold settings corresponding to the user event from event store 825(step 802). Collection threshold settings include settings that areconfigured to filter user event data. For example, a vendor may wish toset an out-of-region threshold, such as ten seconds, for a region on hisweb page such that once user event data is collected for the region,user events are not tracked for another ten seconds. Event store 825 maybe stored on a non-volatile storage area, such as a computer hard drive.

Processing looks-up a location collection flag in event store 825 (step805). The location collection flag corresponds to a particular userevent and identifies whether the event has occurred. For example, if theuser event is a “mouse in region 1” event, processing retrieves thelocation collection flag that corresponds to a “mouse in region 1”event. A determination is made as to whether the location collectionflag is cleared (decision 810). If the location collection flag isclear, decision 810 branches to “Yes” branch 812 whereupon processingtracks the user event at step 850.

On the other hand, if the flag is set, decision 810 branches to “No”branch 818 whereupon processing performs steps to identify whether tocollect user event data based upon the last occurrence of the user eventand the collection threshold settings. Processing compares thecollection threshold settings with the user event's properties at step830. Using the example described above, processing identifies the timethat the new region 1 mouseover event occurs, identifies when locationcollection flag was last set, and compares the difference in time withthe collection threshold settings.

A determination is made as to whether to clear the collection thresholdsettings based on the comparison performed in step 830 (decision 840).If processing should clear the location collection flag, decision 840branches to “Yes” branch 844 whereupon processing clears the locationcollection flag (step 845) and tracks the user event at step 850. Usingthe example described above, the location collection flag may have beenset twenty seconds prior to the current user event. In this example,processing clears the location collection flag since the time betweenthe two user events is longer than the corresponding collectionthreshold settings. On the other hand, if processing should not clearthe location collection flag, decision 840 branches to “No” branch 842bypassing location collection flag clearing steps.

Processing tracks the user event until completion at step 850. Using theexample described above, processing tracks the “mouse in region 1” eventuntil the user moves his pointing device out of region 1. Adetermination is made as to whether the user event meets collectionthreshold settings (decision 855). For example, an “in-region”collection threshold setting may be configured to require a user'spointing device to be in a particular region for a minimum amount oftime in order to consider the user event valid, such as ten seconds. Ifthe user event data does not meet collection threshold settings,decision 855 branches to “No” branch 857 bypassing user event datasending steps.

On the other hand, if the user event data meets collection thresholdsettings, decision 855 branches to “Yes” branch 859 whereupon processingsends the user event data to server 865 (step 860). If server 865receives the user event data intact, server 865 sends acknowledgement867 to the client. On the other hand, if server 865 did not receive theuser event data intact, server 865 may not send a response, or server865 may send an error message to the client that indicates that the userevent data included errors.

A determination is made as to whether the client received anacknowledgment message from server 865 (decision 870). If the client didnot receive an acknowledgement message, decision 870 branches to “No”branch 872 which loops back to resend the user event data. This loopingcontinues until the client receives an acknowledgement message, at whichpoint decision 870 branches to “Yes” branch 878 whereupon processingsets the location collection flag at step 880, and processing returns at890.

In one embodiment, processing may be configured to limit the number ofattempts to send the user event data to the server, such as fiveattempts. In this embodiment, the client sends the user event data tothe server a maximum of five times.

FIG. 9 is a flowchart showing steps taken in processing user event dataat a server location. Server processing commence at 900, whereupon theserver receives user event data from client 915 at step 910. Adetermination is made as to whether processing received the user eventdata intact (decision 920). For example, processing may perform achecksum comparison to see if the user event data includes errors. Ifthe server did not receive the user event data intact, decision 920branches to “No” branch 922 which loops back to wait for client 915 toresend the user event data (step 930). In one embodiment, processingsends an error message to the client that indicates that the user eventdata included errors. This looping continues until the server receivesthe user event data intact, at which point decision 920 branches to“Yes” branch 928.

Processing stores the user event data in data store 945. Data store 945includes user event data history and may be stored on a non-volatilestorage area, such as a computer hard drive. Processing retrieves userevent data history from data store 945 that corresponds to the storeduser event at step 950. A determination is made as to whether processingshould adjust collection threshold settings based upon the user eventdata history (decision 960). For example, the user event data historymay indicate that a numerous amount of data may be stored for aparticular region and that the region's “out-of-region” thresholdsetting should be increased in order to decrease the amount of userevent data that the client sends.

If collection threshold settings should not be adjusted, decision 960branches to “No” branch 962 bypassing collection threshold adjustmentsteps. On the other hand, if the collection threshold settings should beadjusted, decision 960 branches to “Yes” branch 968 whereupon processingadjusts the collection threshold settings located in threshold store 975and includes the adjusted collection threshold settings in a clientacknowledgement message (see below). Collection threshold store 975 maybe stored on a non-volatile storage area, such as a computer hard drive.

Processing sends an acknowledgement message to client 915 at step 980which indicates that the server received the user event data and mayinclude adjusted collection threshold settings. Processing returns at990.

FIG. 10 is a flowchart showing steps taken in a server configuringcollection threshold settings. Collection threshold settings are used tofilter user event data for a particular user event. For example, aserver may wish to receive user event data for a particular user eventone time per session instead of each time the particular user eventoccurs.

Processing commences at 1000, whereupon processing receives a collectionthreshold setting request from administrator 1008 (step 1005). Adetermination is made as to whether administrator 1008 wishes toconfigure an “in-region time” (decision 1010). The in-region timeidentifies how long a particular user event should occur in order toconsider the user event valid. For example, the administrator mayrequire a user's pointing device to stay in a region for a minimum ofeight seconds in order to consider the user event valid.

If administrator 1008 wishes to configure an in-region time, decision1010 branches to “Yes” branch 1012 whereupon processing storesadministrator 1008's in-region threshold settings in program store 1030(step 1020). Program store 1030 may be stored on a non-volatile storagearea, such as a computer hard drive.

On the other hand, if administrator 1008 does not wish to configurein-region settings, decision 1010 branches to “No” branch 1018 bypassingin-region threshold setting steps. A determination is made as to whetheradministrator 1008 wishes to configure an “out-of-region” time (decision1040). For example, the administrator may require that once a user'spointing device leaves a particular region from a first user event, thatthe user's pointing device should stay out of the region for fiveseconds before re-entering the region in order to consider the entry asa second user event.

If administrator 1008 wishes to configure out-of-region thresholdsettings, decision 1040 branches to “Yes” branch 1042 whereuponprocessing stores the administrator's out-of-region settings in programstore 1030. On the other hand, if administrator 1008 does not wish toconfigure out-of-region settings, decision 1040 branches to “No” branch1048 bypassing out-of-region setting steps.

A determination is made as to whether administrator 1008 wishes toconfigure a mouse click interval (decision 1060). For example, theadministrator's web page may include applets, such as a mortgagecalculator, whereby a user selects the mortgage calculator using a mouseclick. In this example, the administrator may wish to receive user eventdata for the user event one time per session instead of each time theuser selects the mortgage calculator. If administrator 1008 wishes toconfigure the mouse click interval, decision 1060 branches to “Yes”branch 1062 whereupon processing stores the administrator's mouse clickinterval threshold in program store 1030 (step 1070). On the other hand,if administrator 1008 does not wish to configure the mouse clickinterval, decision 1060 branches to “No” branch 1068 bypassing mouseinterval storing steps. Processing ends at 1080.

As one skilled in the art can appreciate, an administrator my configurecollection threshold settings at a regional level or the administratormay configure collection threshold settings on a global level, such asfor an entire web page.

FIG. 11 illustrates information handling system 1101 which is asimplified example of a computer system capable of performing theinvention described herein. Computer system 1101 includes processor 1100which is coupled to host bus 1105. A level two (L2) cache memory 1110 isalso coupled to the host bus 1105. Host-to-PCI bridge 1115 is coupled tomain memory 1120, includes cache memory and main memory controlfunctions, and provides bus control to handle transfers among PCI bus1125, processor 1100, L2 cache 1110, main memory 1120, and host bus1105. PCI bus 1125 provides an interface for a variety of devicesincluding, for example, LAN card 1130. PCI-to-ISA bridge 1135 providesbus control to handle transfers between PCI bus 1125 and ISA bus 1140,universal serial bus (USB) functionality 1145, IDE device functionality1150, power management functionality 1155, and can include otherfunctional elements not shown, such as a real-time clock (RTC), DMAcontrol, interrupt support, and system management bus support.Peripheral devices and input/output (I/O) devices can be attached tovarious interfaces 1160 (e.g., parallel interface 1162, serial interface1164, infrared (IR) interface 1166, keyboard interface 1168, mouseinterface 1170, and fixed disk (HDD) 1172) coupled to ISA bus 1140.Alternatively, many I/O devices can be accommodated by a super I/Ocontroller (not shown) attached to ISA bus 1140.

BIOS 1180 is coupled to ISA bus 1140, and incorporates the necessaryprocessor executable code for a variety of low-level system functionsand system boot functions. BIOS 1180 can be stored in any computerreadable medium, including magnetic storage media, optical storagemedia, flash memory, random access memory, read only memory, andcommunications media conveying signals encoding the instructions (e.g.,signals from a network). In order to attach computer system 1101 toanother computer system to copy files over a network, LAN card 1130 iscoupled to PCI bus 1125 and to PCI-to-ISA bridge 1135. Similarly, toconnect computer system 1101 to an ISP to connect to the Internet usinga telephone line connection, modem 1175 is connected to serial port 1164and PCI-to-ISA Bridge 1135.

While the computer system described in FIG. 11 is capable of executingthe invention described herein, this computer system is simply oneexample of a computer system. Those skilled in the art will appreciatethat many other computer system designs are capable of performing theinvention described herein.

One of the preferred implementations of the invention is an application,namely, a set of instructions (program code) in a code module which may,for example, be resident in the random access memory of the computer.Until required by the computer, the set of instructions may be stored inanother computer memory, for example, on a hard disk drive, or inremovable storage such as an optical disk (for eventual use in a CD ROM)or floppy disk (for eventual use in a floppy disk drive), or downloadedvia the Internet or other computer network. Thus, the present inventionmay be implemented as a computer program product for use in a computer.In addition, although the various methods described are convenientlyimplemented in a general purpose computer selectively activated orreconfigured by software, one of ordinary skill in the art would alsorecognize that such methods may be carried out in hardware, in firmware,or in more specialized apparatus constructed to perform the requiredmethod steps.

While particular embodiments of the present invention have been shownand described, it will be obvious to those skilled in the art that,based upon the teachings herein, changes and modifications may be madewithout departing from this invention and its broader aspects and,therefore, the appended claims are to encompass within their scope allsuch changes and modifications as are within the true spirit and scopeof this invention. Furthermore, it is to be understood that theinvention is solely defined by the appended claims. It will beunderstood by those with skill in the art that if a specific number ofan introduced claim element is intended, such intent will be explicitlyrecited in the claim, and in the absence of such recitation no suchlimitation is present. For a non-limiting example, as an aid tounderstanding, the following appended claims contain usage of theintroductory phrases “at least one” and “one or more” to introduce claimelements. However, the use of such phrases should not be construed toimply that the introduction of a claim element by the indefinitearticles “a” or “an” limits any particular claim containing suchintroduced claim element to inventions containing only one such element,even when the same claim includes the introductory phrases “one or more”or “at least one” and indefinite articles such as “a” or “an”; the sameholds true for the use in the claims of definite articles.

1. An information handling system comprising: one or more processors; amemory accessible by the processors; one or more nonvolatile storagedevices accessible by the processors; and a data collection tool tocollect user event data occurring on a client computer system, the datacollection tool including a set of instructions which are loaded intothe memory and executed by at least one of the processors to performactions of: dividing a page of data into a plurality of regions, thepage of data adaptable to be displayed by an application running on theclient computer system; inserting in the page of data one or more regionidentifiers for each of the regions; sending the page of data from aserver to the client computer system over a computer network;transmitting a data collection program to the client computer system,the data collection program adapted to identify events corresponding touser actions performed on the client computer system and also adapted toidentify a region, selected from the plurality of regions, in which theuser actions were performed; identifying a first event on the clientcomputer system, the first event corresponding to a first user action ina first region; retrieving a first region identifier, the first regionidentifier corresponding to the first region; packaging the first eventand the first region identifier in a first message; sending the firstmessage to the server; detecting that the first event has ended at afirst time; identifying a second event on the client computer system,the second event corresponding to a second user action in the firstregion, wherein the second event occurs at a second time, the secondtime being after the first time; retrieving an out of region thresholdsetting corresponding to the first region, wherein the out of regionthreshold setting indicates an amount of time; determining thedifference between the first time and the second time, wherein thedifference is an elapsed time between the first event ending and thesecond event being detected; comparing the elapsed time to the out ofregion threshold setting; in response to the comparing, determiningwhether the elapsed time is greater than or equal to the out of regionthreshold setting; in response to determining that the elapsed time isgreater than or equal to the out of region threshold setting, performingthe following: packaging the second event and the first regionidentifier in a second message; and sending the second message from theclient computer system to the server; in response to determining thatthe elapsed time is less than the out of region threshold setting,ignoring the second event; retrieving user event data historycorresponding to the first region; in response to retrieving the userevent data history, deciding to adjust the out of region thresholdsetting corresponding to the first region; and in response to thedeciding, adjusting the out of region threshold setting corresponding tothe first region, wherein the adjusting comprises increasing the amountof time.
 2. The information handling system as described in claim 1wherein the page of data corresponds to a page format, the page formatselected from the group consisting of an HTML format, an XHTML format, aWML format, and an XML format.
 3. The information handling system asdescribed in claim 1 wherein the data collection program is adapted todetermine whether the first user action and the second user actioncorrespond to selecting a web page and wherein the sending the firstmessage and sending the second message are performed based upon thedetermination of the data collector program.
 4. The information handlingsystem as described in claim 1 wherein the user actions are selectedfrom the group consisting of a mouse click, a keyboard stroke, a mouseover command, and a mouse out command.
 5. The information handlingsystem as described in claim 1 wherein the dividing further comprises:for each region included in the page of data: identifying a regionstarting point in the page of data; inserting a start tag at the regionstarting point; identifying a region ending point in the page of data;and inserting an end tag at the region ending point.
 6. The informationhandling system as described in claim 1 wherein the data collectionprogram is sent with the page of data.
 7. The information handlingsystem as described in claim 1 wherein identifying the first event andidentifying the second event are non-invasive to the user.
 8. A computerprogram product stored on a computer storage media, the computer storagemedia containing instructions for execution by a computer, which, whenexecuted by the computer, cause the computer to implement a method forcollecting user event data, said method comprising: dividing a page ofdata into a plurality of regions, the page of data adaptable to bedisplayed by an application running on the client computer system;inserting in the page of data one or more region identifiers for each ofthe regions; sending the page of data from a server to the clientcomputer system over a computer network; transmitting a data collectionprogram to the client computer system, the data collection programadapted to identify events corresponding to user actions performed onthe client computer system and also adapted to identify a region,selected from the plurality of regions, in which the user actions wereperformed; identifying a first event on the client computer system, thefirst event corresponding to a first user action in a first region;retrieving a first region identifier, the first region identifiercorresponding to the first region; packaging the first event and thefirst region identifier in a first message; sending the first message tothe server; detecting that the first event has ended at a first time;identifying a second event on the client computer system, the secondevent corresponding to a second user action in the first region, whereinthe second event occurs at a second time, the second time being afterthe first time; retrieving an out of region threshold settingcorresponding to the first region, wherein the out of region thresholdsetting indicates an amount of time; determining the difference betweenthe first time and the second time, wherein the difference is an elapsedtime between the first event ending and the second event being detected;comparing the elapsed time to the out of region threshold setting; inresponse to the comparing, determining whether the elapsed time isgreater than or equal to the out of region threshold setting; inresponse to determining that the elapsed time is greater than or equalto the out of region threshold setting, performing the following:packaging the second event and the first region identifier in a secondmessage; and sending the second message from the client computer systemto the server; in response to determining that the elapsed time is lessthan the out of region threshold setting, ignoring the second event;retrieving user event data history corresponding to the first region; inresponse to retrieving the user event data history, deciding to adjustthe out of region threshold setting corresponding to the first region;and in response to the deciding, adjusting the out of region thresholdsetting corresponding to the first region, wherein the adjustingcomprises increasing the amount of time.
 9. The computer program productas described in claim 8 wherein the page of data corresponds to a pageformat, the page format selected from the group consisting of an HTMLformat, an XHTML format, a WML format, and an XML format.
 10. Thecomputer program product as described in claim 8 wherein the datacollection program is adapted to determine whether the first user actionand the second user action correspond to selecting a web page andwherein the sending the first message and sending the second message areperformed based upon the determination of the data collector program.11. The computer program product as described in claim 8 wherein theuser actions are selected from the group consisting of a mouse click, akeyboard stroke, a mouse over command, and a mouse out command.
 12. Thecomputer program product as described in claim 8 wherein the dividingfurther comprises: for each region included in the page of data:identifying a region starting point in the page of data; inserting astart tag at the region starting point; identifying a region endingpoint in the page of data; and inserting an end tag at the region endingpoint.
 13. The computer program product as described in claim 8 whereinthe data collection program is sent with the page of data.
 14. Thecomputer program product as described in claim 8 wherein identifying thefirst event and identifying the second event are non-invasive to theuser.